package com.chianghao.qyt.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.chianghao.qyt.entity.SysOperationAdmin;
import com.chianghao.qyt.entity.SysOperationRole;

import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

public interface SysOperationAdminService {

    /**
     * 用户登录
     * @param account
     * @param password
     */
    String login(String sessionId,String account, String password);

    /**
     * 查询
     * @param userId
     * @return
     */
    SysOperationAdmin queryById(Long userId);

    /**
     * 分页查询
     * @param userId  当前登录的用户
     * @param pageIndex
     * @param pageSize
     * @return 返回分页数据
     */
    IPage<SysOperationAdmin> queryPage(Long userId, int pageIndex, int pageSize);

    /**
     * 人员退出
     * @param userId
     */
    void logout(Long userId);

    /**
     * 修改登录者自己的密码
     * @param userId
     * @param oldPassword
     * @param newPassword1
     * @param newPasswordConfirm
     */
    void modifyPassword(Long userId, String oldPassword, String newPassword1, String newPasswordConfirm);

    /**
     * 创建人员账号
     * @param account
     * @param username
     * @param password
     */
    void addAdmin(String account, String username, String password);


    /**
     * 修改人员账号
     * @param id
     * @param account
     * @param username
     */
    void modifyAdmin(Long id, String account, String username);

    /**
     * 修改人员密码
     * @param id      账号ID
     * @param password　密码
     */
    void modifyAdminPassword(Long id, String password);

    /**
     * 删除
     * @param id 账号ID
     */
    void delete(Long id);

    /**
     * 设置账号的角色
     * @param accountId 账号ID
     * @param roleIds   角色ID集合
     */
    void setSysOperationRole(Long accountId, HashSet<Long> roleIds);

    /**
     *
     * @param sysOperationAccountIds 管理系统的账号ID
     * @return 返回账号对应的角色集合
     */
    Map<Long, List<SysOperationRole>> selectAccountRoleMap(Set<Long> sysOperationAccountIds);

    /**
     * 判断用户是否是超级管理员
     * @param userId
     * @return
     */
    boolean isSupperAdmin(Long userId);
}
